package hsp.admin.aop;

import hsp.admin.enums.LoggerType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 实现自定义注解需要最少指定两个基本条件
 *      1.注解的作用范围
 *      2.注解的生命周期
 * 四个元注解
 *      1.@Taget 指定注解的作用范围
 *      2.@Retention 指定注解的生命周期
 *      3.@Documented 是一个标记注解，里面没有任何属性，用 @Documented 注解修饰的注解类会被 JavaDoc 工具提取成文档。(不常用，可选项）
 *      4.@Inherited 也是一个标记注解,,没有定义属性，作用是为了表示该注解可以被继承
 *          （比如说：你自定义了一个A注解，并且使用了@Inherited修饰，然后在paren类使用了A注解，那么paren的所有子类都默认继承了注解A）。（不常用）
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface SystemLogger {

    LoggerType[] type() default {};

    Class objectClass() default Object.class;

}
